//
//  YTStack.swift
//  swift_algorithm
//
//  Created by master on 2022/5/12.
//

import Foundation

public struct YTStack<T> { //栈的特点是后进先出
    fileprivate var array = [T]() //内部用来存储数据的数组
    
    public var isEmpty: Bool { //栈是否为空
        array.isEmpty
    }
    
    public var count: Int { //返回栈存储的数据长度
        array.count
    }
    
    public mutating func push(_ element: T) { //栈中添加元素，修改了自身内存，使用mutating
        array.append(element)
    }
    
    public mutating func pop() -> T? { //本身array.popLast()返回的就是可选类型
        array.popLast()
    }
    
    public var top: T? { //本身array.last返回的就是可选类型
        array.last
    }
    
}
